MSGBOX is modal and keeps my timer events from processing, but I still want the user to close this form before continuing. Solution Add DIALOG.BAS and DIALOG.FRM to your application (Local.bas contains all of the required declarations for the API calls, and a sample call to the sub in sub MAIN) change all of your MSGBOX statements to AKMSGBOX and all of your MSGBOX() function calls to AKMSGBOXF the msgbox will appear just like the old one, but non modal and the cursor is clipped to the dialog box region. This lets timer events and backround processing continue, while preventing the user from clicking elsewhere